#include <iostream>
#include <list>
using namespace std;
// template<class ...Args> 
// void Print(Args... args) {
//     cout << sizeof...(args) << endl;
// }
// int main() {
//     double x = 1.1;
//     Print();
//     Print(1);
//     Print(1, string("hello"));
//     Print(1.2, string("hello"), x);
//     return 0;
// }
// void ShowList() {
//     cout << endl;
// }


// template<class T>
// void ShowList(const T& x) {
//     cout << x << endl;
// }
// template<class T, class ...Args> 
// void ShowList(T x, Args... args) {
//     cout << x << endl;
//     ShowList(args...);
// }
// template <class ...Args>
// void Print(Args... args) {
//     ShowList(args...);
// }
// int main() {
//     // Print(1, string("hello"), 1.2);
//     Print();
//     return 0;
// }
// template<class T>
// const T& GetArg(const T& x) {
//     cout << x << " ";
//     return x;
// }

// template<class ...Args>
// void Arguments(Args... args) {}

// template<class ...Args>
// void Print(Args... args) {
//     Arguments(GetArg(args)...);
// }
// int main() {
//     Print();
//     return 0;
// }
// void Print(int x, string y, double z) {
//     Arguments(GetArg(x), GetArg(y), GetArg(z));
// }


// template<class T, class ...Args>
// void ShowList(T x, Args... args) {
//     cout << x << " ";
//     if(sizeof...(args) ==  0) {
//         cout << endl;
//         return ;
//     }
//     ShowList(args...)
// }

// int main() {
//     list<pair<string, int>> lt;
//     pair<string, int> kv("one", 1);
//     // 传入左值
//     lt.push_back(kv); 
//     lt.emplace_back(kv); 

//     // 传入右值
//     lt.push_back(move(kv));
//     lt.emplace_back(move(kv));

//     // 传入参数包
//     // lt.push_back("two", 2); // 报错
//     lt.emplace_back("two", 2);

//     // 传入参数列表
//     lt.push_back({"three", 3});
//     // lt.emplace_back({"three", 3}); // 报错

//     return 0;
// }

// void ShowList(double x) {
//     cout << x << " ";
//     ShowList();
// }

// void ShowList(string x, double z) {
//     cout << x << " ";
//     ShowList(z);
// }

// void ShowList(int x, string y, double z) {
//     cout << x << " ";
//     ShowList(y, z);
// }

// void Print(int x, string y, double z) {
//     ShowList(x, y, z);
// }

// void ShowList() {
//     cout << endl;
// }
// template<class T, class ...Args> 
// void ShowList(T x, Args... args) {
//     cout << x << endl;
//     ShowList(args...);
// }
// template <class ...Args>
// void Print(Args... args) {
//     ShowList(args...);
// }
// int main() {
//     Print(1, string("hello"), 1.2);
//     return 0;
// }

int GetResult(int a){
    int b = 0;
    __try{
        if ( a != 0 ){
            b++;
        }
        return b;
    }
    __finally{
        --b;
    }
    return b;
}